package process;
import java.util.*;
import java.lang.Double;

import databaseAcces.*;

public class CVManagement {
	
	private int num_Ca;
	
	// Stockage les infos de candidat
	// + Sauvegarder un nouveau candidat à la table Candidat
	// + Sauvegarder ses infos personnelles à la table Experience 
	public boolean saveCVManagement(Vector<String> parametre_Candidat,Vector<String> parametre_Expericence)
	{
		boolean resul = true;
		// + On utilise une liste String pour sauvegarder les infos et les expériences en ordre  	
		
		// Appeller  la classe InsertionRequest pour stocker les données 
		InsertionRequest req = new InsertionRequest();	
				
		// *******************************************************//
		// *			LA TABLE CANDIDAT						 *//
		// *******************************************************//
		String nom_prenom = parametre_Candidat.elementAt(0);
		String web_site = parametre_Candidat.elementAt(1);
		String adresse  = parametre_Candidat.elementAt(2);
		String telephone = parametre_Candidat.elementAt(3);
		String courriel = parametre_Candidat.elementAt(4);
		String date_naiss = parametre_Candidat.elementAt(5);
		Double salaire_souhaite = Double.parseDouble(parametre_Candidat.elementAt(6));
		String diplome = parametre_Candidat.elementAt(7);				
		String sexe = (String)parametre_Candidat.elementAt(8);
		String discription = parametre_Candidat.elementAt(9);	
		String language = parametre_Candidat.elementAt(10);	
		int num_user = Integer.parseInt(parametre_Candidat.elementAt(11));	
		
		
		// ====== Sauvegarder un nouveau candidat à la table Candidat ======//		
		resul = req.insertCandidate(nom_prenom, web_site, adresse, telephone, 
				courriel, date_naiss, salaire_souhaite, diplome, sexe,discription,language,num_user);
				
		
		// *******************************************************//
		// *			LA TABLE EXPERIENCE						 *//
		// *******************************************************//
        int num_experien = Integer.parseInt(parametre_Expericence.elementAt(0));
		String nom_Poste_Exerce = parametre_Expericence.elementAt(1);
		String domaine = parametre_Expericence.elementAt(2);
		String specialite = parametre_Expericence.elementAt(3);		
	
		
		// ===== Sauvegarder son expérience à la table Experience =====// 		
		// Appeller  la classe DisplayRequest pour récupérer les données
		DisplayRequest dis = new DisplayRequest();
		num_Ca = dis.getNum_Candidatures(parametre_Candidat);
	
		resul = resul && req.insertExperienceCandidate(num_Ca, num_experien, nom_Poste_Exerce, specialite, domaine);
		
		return resul;
	}
	
	public boolean UpdateCVManagement(int num_Ca,Vector<String> parametre_Candidat,Vector<String> parametre_Expericence)
	{
		boolean resul = true;
			
		// Appeller  la classe InsertionRequest pour stocker les données 
		InsertionRequest req = new InsertionRequest();
		
		// *******************************************************//
		// *		UPDATE LA TABLE CANDIDAT					 *//
		// *******************************************************//
		String nom_prenom = parametre_Candidat.elementAt(0);
		String web_site = parametre_Candidat.elementAt(1);
		String adresse  = parametre_Candidat.elementAt(2);
		String telephone = parametre_Candidat.elementAt(3);
		String courriel = parametre_Candidat.elementAt(4);
		String date_naiss = parametre_Candidat.elementAt(5);
		Double salaire_souhaite = Double.parseDouble(parametre_Candidat.elementAt(6));
		String diplome = parametre_Candidat.elementAt(7);		
		String sexe = (String)parametre_Candidat.elementAt(8);		
		String discription = parametre_Candidat.elementAt(9);
		String language = parametre_Candidat.elementAt(10);	
		int num_user = Integer.parseInt(parametre_Candidat.elementAt(11));
		
		resul = resul&& req.updateCandidatures(num_Ca,nom_prenom,web_site,adresse,telephone,courriel,date_naiss,salaire_souhaite,
				                               diplome,sexe,discription,language,num_user); 
	
		
		// *******************************************************//
		// *		UPDATE LA TABLE EXPERIENCE					 *//
		// *******************************************************//
	    int num_experien = Integer.parseInt(parametre_Expericence.elementAt(0));
		String nom_Poste_Exerce = parametre_Expericence.elementAt(1);
		String domaine = parametre_Expericence.elementAt(2);
		String specialite = parametre_Expericence.elementAt(3);		
		
		resul = resul && req.updateExperience(num_Ca, num_experien, nom_Poste_Exerce, specialite, domaine);		
		return resul;
	}
	
	public int getNumCa()
	{
		return num_Ca;
	}
	
	public Vector<String> getCandidat(int num_Ca)
	{
		Vector<String> candidat = new Vector<String>();
		DisplayRequest dis = new DisplayRequest();
		candidat = dis.getCandidature(num_Ca);		
		return candidat;
	}
	
	public Vector<String> getExperience(int num_Ca)
	{
		Vector<String> result = new Vector<String>();
		DisplayRequest dis = new DisplayRequest();
		
		LinkedList<String> experience = new LinkedList<String>();
		experience = dis.getExperienceCandiate(num_Ca);
		
		for(int i = 0 ; i < experience.size() ; i ++)
			result.add(experience.get(i));
		
		return result;
	}
}
